package gestiontienda.controller.usuario;

import java.util.Set;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;

import com.opensymphony.xwork2.ActionSupport;
import gestiontienda.GenerateFactory;
import gestiontienda.business.dto.LoginDTO;
import gestiontienda.business.dto.TrabajadorDTO;
import gestiontienda.dataaccess.daofactory.DaoFactory;
import gestiontienda.dataaccess.daofactory.HibernateDaoFactory;
import gestiontienda.dataaccess.domain.TrabajadorDAO;
import gestiontienda.dataaccess.domain.hibernate.HibernateTrabajadorDAO;
import gestiontienda.dataaccess.model.TrabajadorVO;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpSession;
import org.apache.struts2.ServletActionContext;


@ParentPackage(value = "gestiontienda")
public class GestionUsuario extends ActionSupport {

    private static final long serialVersionUID = -7133848243722723891L;
    private String theme = "showcase";
    private Map<String, String> themes;
    private LoginDTO login;
    private TrabajadorDTO trabajadorDTO;
    private HttpSession session;
//    private List<EventoDTO> eventos;

    @Action(value = "/ingresar", results = {
        @Result(location = "index.jsp", name = "error"),
        @Result(location = "usuario/bienvenido.jsp", name = "success")
    })
    @Override
    public String execute() {
        session = ServletActionContext.getRequest().getSession();
        DaoFactory daoFactory = GenerateFactory.getInstance(0);//Should be injected automaticly
        TrabajadorDAO trabajadorDAO = daoFactory.createTrabajadorDAO();// should ..." "
        
        
        /////PARTE DE PRUEBA/////////////// la sessionfactory,no usop spring
        System.out.println("Flag 1 " + trabajadorDAO.getClass().getSimpleName());
        List trabajadores = trabajadorDAO.getAll();
        for (Iterator<TrabajadorVO> it = trabajadores.iterator(); it.hasNext();) {
            TrabajadorVO object = it.next();
            System.out.println(object.getNombreUsuario());
        }//dejame prbar algo
        //, voy a generar el war y lo voy a poner en tomcat
        TrabajadorVO trabajadorVO = trabajadorDAO.getByLogin(login.getUsuario(), login.getPassword());
        
//        TrabajadorDTO trabajadorDTO = new TrabajadorDTO();
//        PersonaDTO personaDTO = new PersonaDTO(personaDAO.getByLogin(login));

        System.out.println("Flag 2");
        if (trabajadorDAO.getByLogin(login.getUsuario(), login.getPassword()) == null) {
            return ERROR;
        } else {
            session.setAttribute("usuario", trabajadorVO);
        }

        return SUCCESS;
    }

    @Action(value = "/salir", results = {
        @Result(location = "index.jsp", name = "success")
    })
    public String salir() {
        System.out.println("Accion salir");
        session = ServletActionContext.getRequest().getSession();
        session.setAttribute("usuario", null);
        return SUCCESS;
    }

    public LoginDTO getLogin() {
        return login;
    }

    public void setLogin(LoginDTO login) {
        this.login = login;
    }

    public String getTheme() {
        return theme;
    }

    public void setTheme(String theme) {
        this.theme = theme;
    }

    public Map<String, String> getThemes() {
        return themes;
    }

    public void setThemes(Map<String, String> themes) {
        this.themes = themes;
    }
}
